#version 430 core
#extension GL_EXT_gpu_shader4: enable
#extension GL_EXT_geometry_shader4: enable

layout(points)in;
layout(triangle_strip, max_vertices = 4)out;

in vec4 vs_color[];
out vec3 gs_color;
out vec2 gs_texcoord;

void main()
{
    float particleRadius = vs_color[0].w*0.005+0.005; // 可控参数 颗粒度 
    //particleRadius = particleRadius * 3; 
    
	vec4 pos=gl_PositionIn[0];
    gs_color = vs_color[0].xyz;
	
	gl_Position = pos + vec4(-particleRadius, -particleRadius, 0.0, 0.0);
	gs_texcoord = vec2(-1.0,-1.0);
	EmitVertex();

	gl_Position = pos + vec4(particleRadius, -particleRadius, 0.0, 0.0);
	gs_texcoord = vec2(1.0, -1.0);
	EmitVertex();

	gl_Position = pos + vec4(-particleRadius, particleRadius, 0.0, 0.0);
	gs_texcoord = vec2(-1.0, 1.0);
	EmitVertex();

	gl_Position = pos + vec4(particleRadius, particleRadius, 0.0, 0.0);
	gs_texcoord = vec2(1.0, 1.0);
	EmitVertex();

	EndPrimitive();
}
//
//void main()
//{
//    float particleRadius = vs_color[0].w*0.008+0.003; // 可控参数 颗粒度 
//    //particleRadius = particleRadius * 3; 
//    
//	vec4 pos=gl_PositionIn[0];
//    gs_color = vs_color[0].xyz;
//	
//	float particleRadiusWidth = 0.5*particleRadius/cos(pos.y*0.25*3.1415926);
//	gl_Position = pos + vec4(-particleRadiusWidth, -particleRadius, 0.0, 0.0);
//	gs_texcoord = vec2(-1.0,-1.0);
//	EmitVertex();
//
//	gl_Position = pos + vec4(particleRadiusWidth, -particleRadius, 0.0, 0.0);
//	gs_texcoord = vec2(1.0, -1.0);
//	EmitVertex();
//
//	gl_Position = pos + vec4(-particleRadiusWidth, particleRadius, 0.0, 0.0);
//	gs_texcoord = vec2(-1.0, 1.0);
//	EmitVertex();
//
//	gl_Position = pos + vec4(particleRadiusWidth, particleRadius, 0.0, 0.0);
//	gs_texcoord = vec2(1.0, 1.0);
//	EmitVertex();
//
//	EndPrimitive();
//}